package model;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WHY
 * Date: 2023-06-11
 * Time: 20:55
 */
//通过这个类,封装数据库的连接操作
public class DBUtil {
    //这个类要提供DataSource,DataSource对于一个项目来说,有一个就行了(单例模式)
    private  static  volatile DataSource dataSource=null;
   private static DataSource getDataSource(){
       synchronized (DBUtil.class){
           if(dataSource==null){
               if(dataSource==null){
                   dataSource=new MysqlDataSource();
                   ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/blog_system?characterEncoding=utf8&useSSL=false");
                   ((MysqlDataSource)dataSource).setUser("root");
                   ((MysqlDataSource)dataSource).setPassword("1111");
               }
           }

       }

       return dataSource;
   }
  public static Connection getConnection() throws SQLException {
       return getDataSource().getConnection();
  }
    public static void close(Connection connection, PreparedStatement statement, ResultSet resultSet){
       if(resultSet!=null){
           try {
               resultSet.close();
           } catch (SQLException e) {
               e.printStackTrace();
           }
       }
       if(statement!=null){
           try {
               statement.close();
           } catch (SQLException e) {
              e.printStackTrace();
           }
       }

       if(connection!=null){
           try {
               connection.close();
           } catch (SQLException e) {
               e.printStackTrace();
           }
       }
    }
}
